package com.bjsxy.user;

import java.lang.reflect.Field;

/**获取类的成员变量*/
/*getFields()  返回Filed类型的一个数组，其中包含Field对象的 所有 公共public 字段
* getFDeclaredFields() 返回Filed类型的一个数组，其中包含Field对象的 所有字段
* getField(String fieldName)    返回一个公共 public 字段
* getFDeclaredField(String fieldName)  返回field 的指定对象*/
public class GetField {
    public static void main(String[] args) throws Exception{
        //获取class对象  .class 静态方法
        Class clazz = UsersField.class;
        System.out.println("所有 公共public 字段");
        Field[] fields = clazz.getFields();
        for(Field f:fields){
            System.out.println(f);
            System.out.println(f.getName());
        }
        System.out.println("Field对象的 所有字段");
        Field[] fields1 = clazz.getDeclaredFields();
        for(Field f:fields1){
            System.out.println(f);
            System.out.println(f.getName());
        }
        System.out.println("返回一个公共 public 字段");
        //有异常，要抛出  成员变量可能找不到
        Field f = clazz.getField("age");
        System.out.println(f);
        //如果不是公共字段，则报错
       // Field f1 = clazz.getField("name");
        //System.out.println(f1);
        System.out.println("返回field 的指定对象");
        Field f1 = clazz.getDeclaredField("name");
        System.out.println(f1);
    }
}
